﻿using UnityEngine;
using System.Collections;
using System.Xml.Serialization;
using System.IO;
using System.Collections.Generic;

namespace AutoRoot
{
	public class StoryInfo {
		public List<string> chapters = new List<string>();
		private string xmlPath;
			
		string TestXml =
		   @"<Story_list>
				<Story>
					<Subject>This is a story</Subject>
					<Path>E:/Visteon_Audio_Root/Code/Player/</Path>
					<Preface>file_0.mp3</Preface>
					<Chapters>
						<Chapter>
							<Id>1</Id>
							<Title>Chapter 1</Title>
							<Options>
								<Option>
									<Id>A</Id>
									<File_name>file_1.1.mp3</File_name>
									<Options>
										<Option>
											<Id>A</Id>
											<File_name>file_1.1.1.mp3</File_name>
										</Option>
										<Option>
											<Id>B</Id>
											<File_name>file_1.1.2.mp3</File_name>
										</Option>
										<Option>
											<Id>C</Id>
											<File_name>file_1.1.3.mp3</File_name>
										</Option>
										<Option>
											<Id>D</Id>
											<File_name>file_1.1.4.mp3</File_name>
										</Option>
									</Options>
								</Option>
								<Option>
									<Id>B</Id>
									<File_name>file_1.2.mp3</File_name>
								</Option>
								<Option>
									<Id>C</Id>
									<File_name>file_1.3.mp3</File_name>
								</Option>
								<Option>
									<Id>D</Id>
									<File_name>file_1.4.mp3</File_name>
								</Option>
							</Options>
						</Chapter>
						<Chapter>
							<Id>2</Id>
							<Title>Chapter 2</Title>
							<Options>
								<Option>
									<Id>A</Id>
									<File_name>file_2.1.mp3</File_name>
									<Options>
										<Option>
											<Id>A</Id>
											<File_name>file_2.1.1.mp3</File_name>
										</Option>
										<Option>
											<Id>B</Id>
											<File_name>file_2.1.2.mp3</File_name>
										</Option>
										<Option>
											<Id>C</Id>
											<File_name>file_2.1.3.mp3</File_name>
										</Option>
										<Option>
											<Id>D</Id>
											<File_name>file_2.1.4.mp3</File_name>
										</Option>
									</Options>
								</Option>
								<Option>
									<Id>B</Id>
									<File_name>file_2.2.mp3</File_name>
								</Option>
								<Option>
									<Id>C</Id>
									<File_name>file_2.3.mp3</File_name>
								</Option>
								<Option>
									<Id>D</Id>
									<File_name>file_2.4.mp3</File_name>
								</Option>
							</Options>
						</Chapter>
						<Chapter>
							<Id>3</Id>
							<Title>Chapter 3</Title>
							<Options>
								<Option>
									<Id>A</Id>
									<File_name>file_3.1.mp3</File_name>
								</Option>
								<Option>
									<Id>B</Id>
									<File_name>file_3.2.mp3</File_name>
									<Options>
										<Option>
											<Id>A</Id>
											<File_name>file_3.2.1.mp3</File_name>
										</Option>
										<Option>
											<Id>B</Id>
											<File_name>file_3.2.2.mp3</File_name>
										</Option>
										<Option>
											<Id>C</Id>
											<File_name>file_3.2.3.mp3</File_name>
										</Option>
										<Option>
											<Id>D</Id>
											<File_name>file_3.2.4.mp3</File_name>
										</Option>
									</Options>
								</Option>
								<Option>
									<Id>C</Id>
									<File_name>file_3.3.mp3</File_name>
								</Option>
								<Option>
									<Id>D</Id>
									<File_name>file_3.4.mp3</File_name>
								</Option>
							</Options>
						</Chapter>
					</Chapters>
			    </Story>
			</Story_list>";

		public StoryInfo (){
         	xmlPath = Application.persistentDataPath + "/storylist.xml";
			if (!File.Exists (xmlPath)) {
				File.WriteAllText(xmlPath, TestXml);
			}
			readxml ();
		}

		void readxml() {					
			XmlSerializer serializer = new XmlSerializer(typeof(Storylist));
			
			// Read the XML file.
			using (StreamReader file = new StreamReader (xmlPath))
			{
				Storylist storylist = (Storylist) serializer.Deserialize(file);
				if (storylist.Stories.Count > 0)
				{
					for (int i = 0; i < storylist.Stories.Count; i++)
					{
						Story story = storylist.Stories[i];
						for (int j = 0; j < story.Chapters.Count; j++)
						{
							chapters.Add(story.Chapters[j].Id + " " + story.Chapters[j].Title);

							/* Chapter chapter = story.Chapters[j];
							for (int z = 0; z < chapter.Options.Count; z++)
							{
								Option option = chapter.Options[z];
								if (option.Options.Count > 0)
								{
									Debug.Log(option.Options[0].File_name);
								}
							} */
						}
					}
				}
			}
		}
	}
}
